package xx.services.demo.inter;

import javax.ws.rs.FormParam;
import javax.ws.rs.PathParam;

/**
 * Demo布局模板管理服务接口
 * 
 * @Path (Constants.RESTFUL_ROOT_PATH + "/demo/layout")
 * @author chenxiang 2010-12-19
 * 
 */
public interface ILayoutInterface
{
    /**
     * 新增一个布局demo。 <br>
     * 
     * @POST
     * @param name-@FormParam("name")
     *            布局名称
     * @param container-@FormParam("container")
     *            布局容器，一般是一个div，如：<div class="container">${container}</div>
     * @param demo-@FormParam("demo")
     *            布局dome样例
     * @param shape-@FormParam("shape")
     *            布局样式图片
     * @param description-@FormParam("description")
     *            布局描述
     * @return 新增的布局实体
     * @author chenxiang
     */
    public String add(@FormParam("name")
    String name, @FormParam("container")
    String container, @FormParam("demo")
    String demo, @FormParam("shape")
    String shape, @FormParam("description")
    String description);

    /**
     * 描述：获取一个布局demo，包含Item<br>
     * 
     * @GET
     * @Path ("/{layout_id}")
     * @param layoutId-@PathParam("layout_id")
     *            布局ID
     * @return 布局实体，包含Item
     * @author chenxiang
     */
    public String get(@PathParam("layout_id")
    long layoutId);

    /**
     * 修改一个布局demo。<br>
     * 
     * @PUT
     * @Path ("/{layout_id}")
     * @param layoutId-@PathParam("layout_id")
     *            布局ID
     * @param name-@FormParam("name")
     *            布局名称
     * @param container-@FormParam("container")
     *            布局容器，一般同一个div，如：<div class="container">${container}</div>
     * @param demo-@FormParam("demo")
     *            布局dome样例
     * @param shape-@FormParam("shape")
     *            布局样式图片
     * @param description-@FormParam("description")
     *            布局描述
     * @return 新增的布局实体
     * @author chenxiang
     */
    public String update(@PathParam("layout_id")
    long layoutId, @FormParam("name")
    String name, @FormParam("container")
    String container, @FormParam("demo")
    String demo, @FormParam("shape")
    String shape, @FormParam("description")
    String description);

    /**
     * 描述：删除布局demo。<br>
     * 
     * @DELETE
     * @Path("/{layout_id}")
     * @param layoutId-@PathParam("layout_id")
     *            布局ID，多个布局ID用“_”隔开
     * @return true-删除成功，string-其他删除失败（string就是失败原因）
     * @author chenxiang
     */
    public String delete(@PathParam("layout_id")
    String layoutId);

    /**
     * 描述：获取布局列表。<br>
     * 
     * @GET
     * @return 所有布局列表与对应的列数量
     * @author chenxiang
     */
    public String gets();

    /**
     * 新增一个布局列 itam demo。 <br>
     * 
     * @POST
     * @Path("/{layout_id}/item")
     * 
     * @param layoutId-@PathParam("layout_id")
     *            布局ID
     * @param demo-@FormParam("demo")
     *            布局列DOME实例
     * @param templet-@FormParam("templet")
     *            布局列模板
     * @return 新增的列实体
     * @author chenxiang
     */
    public String addItem(@PathParam("layout_id")
    long layoutId, @FormParam("demo")
    String demo, @FormParam("templet")
    String templet);

    /**
     * 获取布局列layout_item列表。<br>
     * 
     * @GET
     * @Path("/{layout_id}/item")
     * 
     * @param layoutId-@PathParam("layout_id")
     *            布局ID
     * @return 布局列实体列表
     * @author chenxiang
     */
    public String getItems(@PathParam("layout_id")
    long layoutId);
}
